Software with a graphical user interfaces (GUIs) often contain many different user interfaces (UIs) that differ from each other based on various qualitative aspects.
Such aspects can include, for instance, low-level controls that make up the interfaces (for example, button, text box, combo box, etc.), layout of controls (for example, grid layout, free form layout, etc.), position of individual controls (for example, button on top, button on bottom, etc.), labels associated with controls (for example, ‘Click’, ‘Press’, ‘Submit’, ‘Go’ on a button), look and feel of controls (colors, borders, transparency, themes, etc.), behavior of controls (read only, clickable, trigger asynchronous request, etc.), content of controls (for example, all labels with “Name” in them, or all dropdowns for geography selection).
Given the various functional requirements, user interface designers can often spend time designing interfaces trying to achieve the right combination of the above qualitative parameters, which impact the overall interface. The process is highly iterative because designers have to attempt many kinds of interfaces until an interface is discovered that best suits the interest of clients. Additionally, given a set of requirements for the above parameters, the designers may end up redesigning an interface which already exists somewhere else in the larger software system or collection of software systems.
As such, challenges include, for example, within the realm of the interne, where a lot of UI designers spend considerable effort designing a web page, similar pages have already been designed and exist in other websites.